package br.urca.impl;

import java.util.List;

import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.transaction.Transactional;

import br.urca.dao.CursoDAO;
import br.urca.dao.DocumentoEmitidoDAO;
import br.urca.model.Curso;
import br.urca.model.DocumentoEmitido;

@Transactional
public class JPADocumentoEmitidoDAO implements DocumentoEmitidoDAO {
	
	private EntityManager manager;
	
	public JPADocumentoEmitidoDAO() {
		this(null);
	}
	
	@Inject
	public JPADocumentoEmitidoDAO(EntityManager manager) {
		this.manager = manager;
	}

	@Override
	public List<DocumentoEmitido> todos() {
		return this.manager.createQuery("SELECT d FROM DocumentoEmitido d",
				DocumentoEmitido.class).getResultList();
	}

	@Override
	public void salvar(DocumentoEmitido documento) {
		this.manager.merge(documento);
	}

	@Override
	public DocumentoEmitido getDocumentoFromMD5(String md5) {
		try {
			return this.manager
					.createQuery(
							"SELECT d FROM DocumentoEmitido d "
									+ "WHERE d.md5 = :md5",
							DocumentoEmitido.class).setParameter("md5", md5)
					.getSingleResult();
		} catch(Exception e) {
			return null;
		}
	}

}
